<?php
// 1、 根据出租⻋和家⽤轿⻋的共性，抽取⽗
// 类Car
// 属性：⻋的颜⾊color、⻋主姓名userName
// ⽅法：
// 1) 带参构造函数（参数为color和useNam
// e）
// 2) 创建⽆参⽆返回值得⽅法use（描述内容
// 为：我是机动⻋！）
// 3) 重写equals⽅法，⽐较两个对象是否相
// 等（⽐较color，userName）
//父类 Car
class Car{
    public $color;
    public $userName;
    public function __construct($color,$userName)
    {
        $this->color=$color;
        $this->userName=$userName;
    }
    public function use(){
        echo"我是机动车";
    }
    public function equals($obj1,$obj2){
        if(($obj1->color==$obj2->color)&&($obj1->userName==$obj2->userName))
            return true;
            return false;
    }
}
// //测试
// $car1=new Car("红色","张三");
// $car2=new Car("黄色","李四");

// $car1->use();
// var_dump($car1->equals($car1,$car2));

//2.子类taxi

class Taxi extends Car{
    public $company;
    public function __construct($company,$color,$userName)
    {
        $this->company=$company;
        parent::__construct($color,$userName);//调用父类的构造函数
    }
//     2) 创建不允许重写的ride⽅法，描述为：**
// 出租⻋是所属于在
    final public function ride(){
        echo $this->userName."出租车是所属存在".$this->company."公司的";
    }
    public function use(){
        echo "出租⻋是提
        ⾼市⺠⽣活质量的重要条件之
        ⼀";
    }
    public function toString()
    {
        echo $this->color."<br>";
        echo $this->userName;
    }
}
$tax1=new taxi('12','红色','张三');
$tax2=new taxi('12','黄色','李四');
$tax1->use();
$tax1->toString();
$tax2->toString();

final class HomeCar extends Taxi{
    public $num;
    public function __construct($num,$company,$color,$userName)
    {
        $this->num=$num;
        parent::__construct($company,$color,$userName);
    }
    public function display(){
        echo $this->userName."拥有的".$this->color."颜色的私家车有".$this->num."座位";
    }
}
$home1=new HomeCar('4','12','红色','张三');
$home2=new HomeCar('4','12','黄色','李四');
$home1->display();
$home2->display();
?>